A data center is a centralized facility that stores, manages and serves data and applications pertaining to one or more businesses. To support this function, a data center houses many physical components including large scale computers. A computer system typically runs multiple virtual machines to maximize the use of the processing power of a computer system. Each virtual machine on a computer system operates independently from other virtual machines but utilizes the same underlying hardware of the computer system as the other virtual machines.
Data center administrators face many challenges when configuring the physical resources in the data center for optimal and cost-effective use. Specifically, physical resources need to be allocated in an optimized manner to increase the overall resource utilization. Optimizing the allocation of resources, however, is complex as the load on the resources is constantly changing. Similarly, virtual machines are often spawned on demand as the load increases but are not properly killed or migrated when the load decreases. This creates a virtual machine sprawl resulting in an uneven distribution of server utilization and server underuse.